package com.wiscamp.ninechapters.panels.application.command;

import cube.ddd.application.command.CommandObject;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;

/**
 * 菜单表
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class CreateMenuCommand extends CommandObject {
    /**
     * 应用编号
     */
    @Min(value = 1, message = "编号最小值不能低于1。")
    private long applicationId = 0L;

    /**
     * 菜单代码
     */
    @NotBlank(message = "菜单代码不能为空。")
    @Length(max = 50, message = "菜单代码文本长度不能超过50。")
    private String menuCode = "";

    /**
     * 菜单名称
     */
    @NotBlank(message = "菜单名称不能为空。")
    @Length(max = 100, message = "菜单名称文本长度不能超过100。")
    private String menuName = "";

    /**
     * 菜单分组
     */
    @Length(max = 50, message = "菜单分组文本长度不能超过50。")
    private String menuGroup = "";

    /**
     * 序号
     */
    private int menuIndex = 0;

    /**
     * 菜单层级
     */
    private int menuLevel = 0;

    /**
     * 上级菜单编号
     */
    private long parentId = 0L;

    /**
     * 菜单图标
     */
    @Length(max = 100, message = "菜单分组文本长度不能超过100。")
    private String icon = "";

    /**
     * 页面地址
     */
    @Length(max = 250, message = "页面地址文本长度不能超过250。")
    private String pageUrl = "";

    /**
     * 标识符
     */
    @Length(max = 250, message = "标识符文本长度不能超过250。")
    private String identifier = "";

    /**
     * 是否显示
     */
    private boolean visible = true;

    /**
     * 备注
     */
    @Length(max = 250, message = "备注文本长度不能超过250。")
    private String remark = "";

}
